const express = require("express");
const router = express.Router();
const User = require("../models/user");
const AuthService = require("../services/auth");

// 用户登录
router.post("/login", async (req, res) => {
  try {
    const { userName, password } = req.body;

    // 查找用户
    const user = await User.findOne({ username: userName });
    if (!user) {
      return res.status(500).json({
        code: 500,
        message: "用户不存在",
      });
    }

    // 验证密码
    const isValid = await user.comparePassword(password);
    if (!isValid) {
      return res.status(500).json({
        code: 500,
        message: "密码错误",
      });
    }

    // 生成token，指定为pc平台
    const token = AuthService.generateToken(user, 'pc');

    res.status(200).json({
      code: 200,
      data: {
        token,
        userInfo: {
          id: user._id,
          username: user.username,
          role: user.role,
          email: user.email,
          nickname: user.nickname,
          avatar: user.avatar,
        },
      },
    });
  } catch (error) {
    res.status(500).json({
      code: 500,
      message: error.message,
    });
  }
});

// 用户注册
router.post("/register", async (req, res) => {
  try {
    const result = await AuthService.register(req.body);

    res.status(200).json({
      code: 200,
      data: result,
    });
  } catch (error) {
    res.status(500).json({
      code: 500,
      message: error.message,
    });
  }
});

// 退出登录
router.post("/logout", async (req, res) => {
  try {
    // 这里可以添加一些清理工作，比如清除服务端session等
    // 但由于我们使用的是JWT，主要的清理工作在前端完成
    
    res.status(200).json({
      code: 200,
      message: "退出成功",
    });
  } catch (error) {
    res.status(500).json({
      code: 500,
      message: "退出失败",
    });
  }
});

module.exports = router;
